#ifndef __AUDIO_FORMATS_H__
#define __AUDIO_FORMATS_H__ 1

namespace NAudioFormats
{
	enum ECodec
	{
		UNKNOWN_CODEC = 0,
		PCM = 1,
		ALAW,
		ULAW,
		/* Codec you like */
	};

	enum ESamplesWidth
	{
		UNKNOWN_WIDTH,

		S8,
		U8,

		S16LE, // LE = little endian
		S16BE, // BE = big endian
		S16HO, // HO = host order. It is depended from the architecture and
		       // can be little or big endian.
		U16LE,
		U16BE,
		U16HO,

		DOUBLE,
	};

	enum ESamplesFormat
	{
		ORIGINAL,
		MODIFIED // --> need double samples
	};

	struct SStreamInfo
	{
		SStreamInfo(NAudioFormats::ESamplesWidth pSamplesWidth = UNKNOWN_WIDTH, 
				unsigned int pSampleRate = 8000,
				NAudioFormats::ECodec pCodec = UNKNOWN_CODEC) : 
			mSamplesWidth(pSamplesWidth),
			mSampleRate(pSampleRate),
			mCodec(pCodec) { }

		NAudioFormats::ESamplesWidth mSamplesWidth;
		unsigned int mSampleRate;
		NAudioFormats::ECodec mCodec;
	};
}

#endif /* __AUDIO_FORMATS_H__ */

